home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C / Applications / Python 1.3 / source code / Nt / Demo / dl.nt / mci / mcimodule.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-12-17  |  1.3 KB  |  63 lines  |  [TEXT/R*ch]

  1. /***********************************************************
  2.  
  3. ******************************************************************/
  4.  
  5. /* mci.c -- module for interface into Win32's MCI interface. */
  6. #include "windows.h"
  7.  
  8. #undef INCREF
  9. #undef DECREF
  10.  
  11. #include "allobjects.h"
  12. #include "modsupport.h"
  13.  
  14. static object *mci_module_error;
  15.  
  16. /* Send an MCI "play" command */
  17. static object *
  18. py_mci_send(object * self, object * args)
  19. {
  20.     DWORD ret;
  21.     char * cmd;
  22.     char retString[128];
  23.     object *retObj;
  24.  
  25.     if (!getargs(args, "s", &cmd))
  26.         return (NULL);
  27.  
  28.     ret = mciSendString(cmd, retString, sizeof(retString), 0);
  29.     if (ret!=0)
  30.     {
  31.         if (!mciGetErrorString(ret, retString, sizeof(retString)))
  32.             sprintf(retString,"unknown MCI error (%ld)", (long)ret);
  33.         err_setstr(mci_module_error, retString);
  34.         return NULL;
  35.     }
  36.     if (retString[0]=='\0')
  37.     {
  38.         INCREF(None);
  39.         retObj = None;
  40.     }
  41.     else
  42.         retObj = mkvalue("s", retString);
  43.     return retObj;
  44. }
  45.  
  46.  
  47. /* List of functions exported by this module */
  48. static struct methodlist mci_functions[] = {
  49.     {"send",        (method)py_mci_send},
  50.     {NULL,            NULL}         /* Sentinel */
  51. };
  52.  
  53.  
  54. void
  55. initmci(void)
  56. {
  57.   object *dict, *module;
  58.   module = initmodule("mci", mci_functions);
  59.   dict = getmoduledict(module);
  60.   mci_module_error = newstringobject("mci error");
  61.   dictinsert(dict, "error", mci_module_error);
  62. }
  63.